- 使用
shouldComponentUpdate规避冗余的更新逻辑 PureComponent + Immutable.jsReact.memo与useMemo
注:这 3 个思路同时也是 React 面试中“性能优化”这一环的核心所在
# 善用 shouldComponentUpdate
shouldComponentUpdate 的调用形式如下:
shouldComponentUpdate(nextProps, nextState)
@前端进阶之旅: 代码已经复制到剪贴板
render方法由于伴随着对虚拟DOM的构建和对比,过程可以说相当耗时。而在React当中,很多时候我们会不经意间就频繁地调用了render。为了避免不必要的render操作带来的性能开销,React 提供了shouldComponentUpdate这个口子。React 组件会根据shouldComponentUpdate的返回值,来决定是否执行该方法之后的生命周期,进而决定是否对组件进行re-render(重渲染)。shouldComponentUpdate的默认值为true,也就是说 “无条件 re-render”。在实际的开发中,我们往往通过手动往shouldComponentUpdate中填充判定逻辑,来实现“有条件的 re-render”。
首先我们来看两个子组件的代码,这里为了尽量简化与数据变更无关的逻辑,ChildA 和 ChildB 都只负责从父组件处读取数据并渲染,它们的编码分别如下所示。
// ChildA.js:
import React from "react";
export default class ChildA extends React.Component {
render() {
console.log("ChildA 的render方法执行了");
return (
<div className="childA">
子组件A的内容:
{this.props.text}
</div>
);
}
}
@前端进阶之旅: 代码已经复制到剪贴板
